#include "MainWindow.h"
#include "ui_MainWindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :  //主窗口控制程序
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);    //指定左边的DockWidget占据整个左边,设定角落，指定底部左下角是左浮动控件停靠区域。
    this->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);  //指定右边的DockWidget占据整个右边,设定角落，指定底部左右角是右浮动控件停靠区域。

    qredirection = QSharedPointer<QRedirectStream>(
                new QRedirectStream(std::cout,ui->logger));  // 绑定重定向类到logger(注意：UI界面中改为logger后记得敲回车键！)
                // 注意，这里就是将std::cout绑定到相应的ui->logger控件上，让所有的std::cout都可以显示在ui->logger上。
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_actionOpen_triggered()   //打开文件的槽函数
{
    auto filepath = QFileDialog::getOpenFileName(this,              //getOpenFileName是静态函数,this是父级控件的指针，一般选择this。
                                                 tr("Open a file"), //打开对话框的标题
                                                 QDir::homePath(),  //打开文件的时候，浏览文件起始目录,Dir相当于是路径的意思
                                                 "Images (*.jpg);;Text files (*.txt)");  //这里是过滤文件，指定选择什么类型的文件
                                                                                         //如果中间不多加一个分号;则会同时可选.jpg和.txt文件。
    if (QFileInfo(filepath).exists()) {     //这里使用了一个文件信息类：QFileInfo，可以方便的用于检查文件是否存在。
        qDebug() << "File found and opened. " << endl; //对于QFileDialog的详细文档，请参看：https://doc.qt.io/qt-5/qfiledialog.html#getOpenFileName
        std::cout << "Test redirection... file found and opened @" << filepath.toStdString() << std::endl; //对应第14行绑定的输出流。
    }
}
